﻿using System.Collections.Generic;

namespace Reckoning
{
    /// <summary>
    /// Counting options
    /// </summary>
    public class CountOptions
    {
        #region Properties
        /// <summary>
        /// Whether stemming should be done       
        /// </summary>
        public bool DoStemming { get; private set; }
        
        /// <summary>
        /// Whether the list of stop words should be used
        /// </summary>        
        public bool UseStopWords { get; private set; }
        
        /// <summary>
        /// Set of stop words
        /// </summary>
        public HashSet<StopWordInfo> StopWords { get; private set; }
        
        /// <summary>
        /// Top N words threshold
        /// </summary>
        public uint TopNThresh { get; private set; }

        /// <summary>
        /// Cumulative percentage threshold
        /// </summary>
        public uint PercentThresh { get; private set; }
        
        /// <summary>
        /// Whether to use a reference file
        /// </summary>        
        public bool UseReferenceFile { get; private set; }
        
        /// <summary>
        /// The reference file path
        /// </summary> 
        public string ReferenceFilePath { get; private set; }              
        #endregion

        #region Public Methods
        /// <summary>
        /// Constructor
        /// </summary>
        public CountOptions(bool doStemming,
                            bool useStopWords,
                            HashSet<StopWordInfo> stopWords,
                            uint topNThresh,
                            uint percentThresh,
                            bool useReferenceFile,
                            string referenceFilePath)
        {
            DoStemming = doStemming;
            UseStopWords = useStopWords;
            StopWords = stopWords;
            TopNThresh = topNThresh;
            PercentThresh = percentThresh;
            UseReferenceFile = useReferenceFile;
            ReferenceFilePath = referenceFilePath;
        }                            
        #endregion         
    }
}
